<?php
namespace core;

class Loader
{
    static $namespaces;

    static public function autoload($class)
    {
        // echo PHP_EOL . '[ autoload ] ' . $class . PHP_EOL;
        require ROOT_PATH . '/' . str_replace('\\', '/', $class) . EXT;
    }


    static public function register($autoload = null)
    {
        // 注册系统自动加载
        spl_autoload_register($autoload ?: '\\core\\Loader::autoload', true, true);

        // 获取当前命名空间
        self::addNamespace([
            'app'       => ROOT_PATH . 'app' . DS,
            'config'    => ROOT_PATH . 'config' . DS,
            'core'      => ROOT_PATH . 'core' . DS,
            'database'  => ROOT_PATH . 'database' . DS,
            'decorator' => ROOT_PATH . 'decorator' . DS
        ]);
        
        // 加载配置项
        Config::load();
    }

    static public function addNamespace($namespace)
    {
        if (is_array($namespace)) {
            self::$namespaces = $namespace;
        }
    }
}

/**
 * include
 * @param  string $file 文件路径
 * @return mixed
 */
function __include_file($file)
{
    return include $file;
}

/**
 * require
 * @param  string $file 文件路径
 * @return mixed
 */
function __require_file($file)
{
    return require $file;
}